uni |
您所在的位置:网站首页 › vuesax 调popup大小 › uni |
uni-popup官方文档 我这里的背景是弹出一个选择规格的菜单。使用vue3+ts,使用组合式api 首先看看在vue3+ts+setup下的使用: 弹出 你好 import { ref } from "vue"; // 这里的这个变量名,必须和上面的ref="popup"的变量名相同,这样就相当于绑定了这个元素了 const popup = ref(null); // 按钮调用该方法打开弹出层 function openSpecs() { popup.value.open(); }从这里可以看出来,弹出层的整体是透明的,而主界面是随着内部的元素大小自适应的。 现在在弹出层中编写复杂的效果 我新建了一个selectSpecs.vue: {{ title }} import { onMounted, ref } from "vue"; // 下面都是一些生成数据的逻辑,可以不关心。 let title = "标题测试"; interface iOption { key: number; text: string; disable: boolean; value: number; } interface iSpecs { key: number; text: string; value: number; option: iOption[]; } const specsList: iSpecs[] = new Array(3); for (let i = 0; i optionList[j] = { key: j, text: "属性" + j, disable: false, value: j, }; } specsList[i] = { key: i, text: "规格" + i, value: i, option: optionList, }; } // 这里是为了确定滚动区域的高度,不给高度不滚动的,这里的效果或许还有点问题。 const scrollH = ref(0); onMounted(() => { let group = uni.createSelectorQuery().select("#group"); //根据id获取一个规格组的高度 // prettier-ignore group.boundingClientRect((data) => { //计算高度:高度控制在3个规格组的高度以内,即3个组以内不需要滚动,+10是因为实测获取的高度比真实高度少一点,不加的话就会需要小范围的滚动一下 if (specsList.length scrollH.value=(data.height+10)*3 } }).exec(); }); .background { background-color: white; border-radius: 10px; } .title { font-size: x-large; font-family: "Times New Roman", Times, Cursive; text-align: center; }这里内容看似很长,其实都是为了展示效果,可以不看细节。可以看看我对滚动区域的高度的设置方法。 引入的方式是将上面“你好”改为如下: 当然组件也是要import的: import { ref } from "vue"; import SelectSpecs from "../goods/view/selectSpecs.vue"; //导入组件 .......当我数据小的时候,他的效果是这样的: 当我数据多了之后: 我首先想到的是,给这个宽度限制一个最大百分比,用max-width: 80%;,加在background 样式的里面,因为这是整个背景的视图嘛,结果效果是这样的: 看来是我的样式加的位置不对,但是uni-popup也没提供这个参数。在uni-popup嵌套一层 view来控制样式: 弹出这样也没效果。 于是debug发现,真正控制弹出层主窗体大小的样式是“.uni-popup__wrapper”,难道我要去修改源代码吗?这样不太好,不利于代码移植。 于是就想着有没有办法从子组件修改父组件的样式的方法,结果没找到,倒是找到了父组件修改子组件的样式的方法,于是代码稍微修改一下: 增加了一个样式: .updatePopup :deep(.uni-popup__wrapper) { max-width: 80%; }这里注意.vue文件允许有多组,我这里就是新建的一个,然后用深度选择器去修改子组件的样式。 其实父组件与.uni-popup__wrapper中间还隔着一两层view节点,但是:deep也是可以找到这个样式去修改的。 最后效果是这样的: 其实也是学会了一招修改子组件的样式。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |